#ifndef SWITCHFILTER_H
#define SWITCHFILTER_H

//Библиотека Qt.
#include <QHash>
#include <QVariant>


//Внутренняя библиотека.
#include "vidfilter.h"


class SwitchFilter : public VidFilter
{
	Q_OBJECT
public:
	//Конструктор.
	SwitchFilter(int index, QObject *parent = NULL);

	//Деструктор.
	virtual ~SwitchFilter() {}

	//Функция возврата типа фильтра.
	VidFilter::TYPE getType() {return VidFilter::SWITCH;}

	//Функция добавления фильтра в хэш.
	bool addFilter(VidFilter::TYPE type);

	//Функция удаления фильтра из хэша.
	bool deleteFilter(VidFilter::TYPE type);

	//Функция установки следующего фильтра текущим фильтром.
	void setNextFilter();

	//Функция установки предыдущего фильтра текущим фильтром.
	void setPreviousFilter();

	//Функция установки фильтра текущим.
	bool setCurrentFilter(VidFilter::TYPE type);

	//Функция обнуления текущего фильтра.
	void unsetCurrentFilter();

	//Функция возврата списка значений параметра фильтра.
	virtual bool getListParam(DevParam::GET_LIST_PARAM param, QHash<int, QVariant> *valhash);

	//Функция возврата параметра фильтра.
	virtual bool getParam(DevParam::GET_PARAM param, QVariant *value);

	//Функция установки параметра фильтра.
	virtual bool setParam(DevParam::SET_PARAM param, QVariant value);

private:
	//Текущий фильтр.
	VidFilter *filter;

	//Хэш фильтров.
	QHash<int, VidFilter *> filtersHash;

};

#endif
